// -*- coding: utf-8 -*- 
/**
 * Project: AlgorithmsLearn
 *
 * @author: yanking
 * Create time: 2022-03-07 19:52
 * IDE: IntelliJ IDEA
 * Introduction:
 */
package com.LeetCodeT.TREE;

import com.DataStruct.Tree.TwoBinaryTree.TreeNode;

import java.util.HashSet;
import java.util.Set;

public class FindTarget {
    /**
     * 记录当前值 -> 遍历树的时候进行动态查找
     */
    Set<Integer> nodes = new HashSet<>();

    /**
     * 在给定的二叉搜索树中找到两数之和
     */
    public boolean findTarget(TreeNode root, int k) {
        // 因为给定的树是二叉搜索树 -> 所以使用中序排序是树的值是从小到大开始的
        if (root == null) {
            return false;
        }
        if (nodes.contains(k - root.val)) {
            // 存在互补值
            return true;
        } else {
            nodes.add(root.val);
        }
        boolean L = false, R = false;
        if (root.left != null) {
            L = findTarget(root.left, k);
        }
        if (root.right != null) {
            R = findTarget(root.right, k);
        }

        return L || R;
    }



}
